/**
 * 
 */
package com.starview.star.compiler.type;

import com.starview.platform.data.type.IType;
import com.starview.platform.data.type.Location;
import com.starview.star.compiler.canonical.Variable;
import com.starview.star.compiler.util.AccessMode;
import com.starview.star.compiler.util.PrettyPrintable;

public interface DictInfo extends PrettyPrintable
{
  /**
   * What is the source of this definition
   * 
   * @return
   */
  Location getLoc();

  /**
   * What is the name of this entry?
   * 
   * @return
   */
  String getName();

  /**
   * What is the type of this entry?
   * 
   * @return
   */
  IType getType();

  /**
   * Is this entry initialized?
   * 
   * @return true if the variable is initialized
   */
  boolean isInitialized();

  /**
   * What is the access for this entry?
   * 
   * @return readOnly if you cannot assign to this variable
   */
  AccessMode getAccess();

  /**
   * Return the root variable
   * 
   * @return
   */
  Variable getVariable();
}